Fix [patch] causing updates with a virtual manifest
authorAlex Crichton <alex@alexcrichton.com>
Thu, 5 Oct 2017 22:11:25 +0000 (15:11 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Thu, 5 Oct 2017 22:11:25 +0000 (15:11 -0700)
commite4bf48e9ecc4a255855c3e7a95867ce61be6e0e1
tree3ad7df64f38b2472eba270260b76005741ee7ba9
parent5b0bf5459d296c3e49b22d66c5a3870d42597d25
Fix [patch] causing updates with a virtual manifest

This commit fixes the [patch] implementation to avoid causing spurious updates
of the registry when specified inside of a virtual manifest via a path
dependency that was otherwise outside of the workspace.

Cargo previously attempted to learn about path dependencies through the
configuration of the workspace by looking at members, their path dependencies,
and their replace sections. The replace/patch sections, however, only matter at
the root of the workspace and those weren't looked at! This commit fixes this
problem by explicitly looking at the workspace's replace/patch sections and
avoiding looking at other manifest replace/patch which shouldn't matter.

Closes #4552
src/cargo/core/resolver/encode.rs
tests/patch.rs